/**
 * 通用方法封装处理
 */
var isIE8 = false;
var isIE89 = false;
var isIE9 = false

$(function () {
  // 判断是否有token，没有就跳到登录页
  if (!session.get('token')) {
    var path = window.location.pathname
    if (path !== '/' && path !== '/pages/home/forgetPwd') {
      logOut()
    }
    return
  }

  //判断浏览器是否是ie8
  var userAgent = navigator.userAgent;
  var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1;
  var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
  reIE.test(userAgent);
  var fIEVersion = parseFloat(RegExp["$1"]);
  if (isIE && fIEVersion == 8) {
    isIE8 = true
  }
  if (isIE && (fIEVersion == 8 || fIEVersion == 9)) {
    isIE89 = true
  }
  if (isIE &&  fIEVersion == 9) {
    isIE9 = true
  }


  //  layer扩展皮肤
  if (window.layer !== undefined) {
    layer.config({
      extend: 'moon/style.css',
      skin: 'layer-ext-moon'
    });
  }

  if (!Array.isArray) {
    Array.isArray = function(arg) {
      return Object.prototype.toString.call(arg) === '[object Array]';
    };
  }

  // 回到顶部绑定
  if ($.fn.toTop !== undefined) {
    $('#scroll-up').toTop();
  }

  // select2复选框事件绑定
  if ($.fn.select2 !== undefined) {
    $.fn.select2.defaults.set("theme", "bootstrap");
    $("select.form-control:not(.noselect2)").each(function () {
      $(this).select2().on("change", function () {
        $(this).valid();
      })
    })
  }

  // iCheck单选框及复选框事件绑定
  if ($.fn.iCheck !== undefined) {
    $(".check-box:not(.noicheck),.radio-box:not(.noicheck)").each(function () {
      $(this).iCheck({
        checkboxClass: 'icheckbox-blue',
        radioClass: 'iradio-blue',
      })
    })
  }

  //获取表单json数据
  $.fn.serializeObject = function () {
    var ct = this.serializeArray();
    var obj = {};
    $.each(ct, function () {
      if (obj[this.name] !== undefined) {
        if (!obj[this.name].push) {
          obj[this.name] = [obj[this.name]];
        }
        obj[this.name].push(this.value || "");
      } else {
        obj[this.name] = this.value || "";
      }
    });
    return obj;
  };

  // 气泡弹出框特效（移到元素时）
  $(document).on("mouseenter", '.table [data-toggle="popover"]', function () {
    var _this = this;
    $(this).popover("show");
    $(".popover").on("mouseleave", function () {
      $(_this).popover('hide');
    });
  })

  // 气泡弹出框特效（离开元素时）
  $(document).on("mouseleave", '.table [data-toggle="popover"]', function () {
    var _this = this;
    setTimeout(function () {
      if (!$(".popover:hover").length) $(_this).popover("hide");
    }, 100);
  });

  // laydate 时间控件绑定
  if ($(".select-time").length > 0) {
    layui.use('laydate', function () {
      var laydate = layui.laydate;
      var startDate = laydate.render({
        elem: '#startTime',
        max: $('#endTime').val(),
        theme: 'molv',
        trigger: 'click',
        done: function (value, date) {
          // 结束时间大于开始时间
          if (value !== '') {
            endDate.config.min.year = date.year;
            endDate.config.min.month = date.month - 1;
            endDate.config.min.date = date.date;
          } else {
            endDate.config.min.year = '';
            endDate.config.min.month = '';
            endDate.config.min.date = '';
          }
        }
      });
      var endDate = laydate.render({
        elem: '#endTime',
        min: $('#startTime').val(),
        theme: 'molv',
        trigger: 'click',
        done: function (value, date) {
          // 开始时间小于结束时间
          if (value !== '') {
            startDate.config.max.year = date.year;
            startDate.config.max.month = date.month - 1;
            startDate.config.max.date = date.date;
          } else {
            startDate.config.max.year = '2099';
            startDate.config.max.month = '12';
            startDate.config.max.date = '31';
          }
        }
      });
    });
  }

  // laydate time-input 时间控件绑定
  if ($(".time-input").length > 0) {
    layui.use('laydate', function () {
      var com = layui.laydate;
      $(".time-input").each(function (index, item) {
        var time = $(item);
        // 控制控件外观
        var type = time.attr("data-type") || 'date';
        // 控制回显格式
        var format = time.attr("data-format") || 'yyyy-MM-dd';
        // 控制日期控件按钮
        var buttons = time.attr("data-btn") || 'clear|now|confirm', newBtnArr = [];
        // 日期控件选择完成后回调处理
        var callback = time.attr("data-callback") || {};
        if (buttons) {
          if (buttons.indexOf("|") > 0) {
            var btnArr = buttons.split("|"), btnLen = btnArr.length;
            for (var j = 0; j < btnLen; j++) {
              if ("clear" === btnArr[j] || "now" === btnArr[j] || "confirm" === btnArr[j]) {
                newBtnArr.push(btnArr[j]);
              }
            }
          } else {
            if ("clear" === buttons || "now" === buttons || "confirm" === buttons) {
              newBtnArr.push(buttons);
            }
          }
        } else {
          newBtnArr = ['clear', 'now', 'confirm'];
        }
        com.render({
          elem: item,
          theme: 'molv',
          trigger: 'click',
          type: type,
          format: format,
          btns: newBtnArr,
          done: function (value, data) {
            if (typeof window[callback] != 'undefined'
              && window[callback] instanceof Function) {
              window[callback](value, data);
            }
          }
        });
      });
    });
  }

  // tree 关键字搜索绑定
  if ($("#keyword").length > 0) {
    $("#keyword").bind("focus", function focusKey(e) {
      if ($("#keyword").hasClass("empty")) {
        $("#keyword").removeClass("empty");
      }
    }).bind("blur", function blurKey(e) {
      if ($("#keyword").val() === "") {
        $("#keyword").addClass("empty");
      }
      $.tree.searchNode(e);
    }).bind("input propertychange", $.tree.searchNode);
  }

  // tree表格树 展开/折叠
  var expandFlag;
  $(document).on('click',"#expandAllBtn",function () {
    var dataExpand = $.common.isEmpty(table.options.expandAll) ? true : table.options.expandAll;
    expandFlag = $.common.isEmpty(expandFlag) ? dataExpand : expandFlag;
    if (!expandFlag) {
      $.bttTable.bootstrapTreeTable('expandAll');
    } else {
      $.bttTable.bootstrapTreeTable('collapseAll');
    }
    expandFlag = expandFlag ? false : true;
  })

  // 按下ESC按钮关闭弹层
  $('body', document).on('keyup', function (e) {
    if (e.which === 27) {
      $.modal.closeAll();
    }
  });
});

(function ($) {
  'use strict';
  $.fn.toTop = function (opt) {
    var elem = this;
    var win = $(window);
    var doc = $('html, body');
    var options = $.extend({
      autohide: true,
      offset: 50,
      speed: 500,
      position: true,
      right: 15,
      bottom: 5
    }, opt);
    elem.css({
      'cursor': 'pointer'
    });
    if (options.autohide) {
      elem.css('display', 'none');
    }
    if (options.position) {
      elem.css({
        'position': 'fixed',
        'right': options.right,
        'bottom': options.bottom,
      });
    }
    elem.click(function () {
      doc.animate({
        scrollTop: 0
      }, options.speed);
    });
    win.scroll(function () {
      var scrolling = win.scrollTop();
      if (options.autohide) {
        if (scrolling > options.offset) {
          elem.fadeIn(options.speed);
        } else elem.fadeOut(options.speed);
      }
    });
  };
})(jQuery);

var isIE = window.ActiveXObject || "ActiveXObject" in window

/** 刷新选项卡 */
var refreshItem = function () {
  var topWindow = $(window.parent.document);
  var currentId = $('.page-tabs-content', topWindow).find('.active').attr('data-id');
  var target = $('.RuoYi_iframe[data-id="' + currentId + '"]', topWindow);
  var url = target.attr('src');
  target.attr('src', url).ready();
}
/** 关闭选项卡 */
var closeItem = function (dataId) {
  var topWindow = $(window.parent.document);
  // var $contentWindow = $('.RuoYi_iframe[data-id="' + dataId + '"]', topWindow).contentWindow;
  // $contentWindow.$.table.refresh();

  if ($.common.isNotEmpty(dataId)) {
    window.parent.$.modal.closeLoading();
    // 根据dataId关闭指定选项卡
    $('.menuTab[data-id="' + dataId + '"]', topWindow).remove();
    // 移除相应tab对应的内容区
    $('.mainContent .RuoYi_iframe[data-id="' + dataId + '"]', topWindow).remove();
    return;
  }

  var panelUrl = window.frameElement.getAttribute('data-panel');
  //changed by xiaobei 2020/8/12 兼容ie关闭子页面弹窗时报错
  if (isIE) {
    closeTab($('.page-tabs-content .active i', topWindow))
  } else {
    $('.page-tabs-content .active i', topWindow).click();
  }

  if ($ && $.common.isNotEmpty(panelUrl)) {
    $('.menuTab[data-id="' + panelUrl + '"]', topWindow).addClass('active').siblings('.menuTab').removeClass('active');
    $('.mainContent .RuoYi_iframe', topWindow).each(function () {
      if ($(this).data('id') == panelUrl) {
        $(this).show().siblings('.RuoYi_iframe').hide();
        return false;
      }
    });
  }
}


function closeTab(that) {
  var topWindow = $(window.parent.document);
  var closeTabId = that.parents('.menuTab').data('id');
  var currentWidth = that.parents('.menuTab').width();
  var panelUrl = that.parents('.menuTab').data('panel');
  // 当前元素处于活动状态
  if (that.parents('.menuTab').hasClass('active')) {

    // 当前元素后面有同辈元素，使后面的一个元素处于活动状态
    if (that.parents('.menuTab').next('.menuTab').size()) {

      var activeId = that.parents('.menuTab').next('.menuTab:eq(0)').data('id');
      that.parents('.menuTab').next('.menuTab:eq(0)').addClass('active');

      $('.mainContent .RuoYi_iframe', topWindow).each(function () {
        if ($(this).data('id') == activeId) {
          $(this).show().siblings('.RuoYi_iframe').hide();
          return false;
        }
      });

      var marginLeftVal = parseInt($('.page-tabs-content', topWindow).css('margin-left'));
      if (marginLeftVal < 0) {
        $('.page-tabs-content', topWindow).animate({
            marginLeft: (marginLeftVal + currentWidth) + 'px'
          },
          "fast");
      }

      if ($ && $.common.isNotEmpty(panelUrl)) {
        $('.menuTab[data-id="' + panelUrl + '"]', topWindow).addClass('active').siblings('.menuTab').removeClass('active');
        $('.mainContent .RuoYi_iframe', topWindow).each(function () {
          if ($(this).data('id') == panelUrl) {
            $(this).show().siblings('.RuoYi_iframe').hide();
            return false;
          }
        });
      }

      //  移除当前选项卡
      that.parents('.menuTab').remove();

      // 移除tab对应的内容区
      $('.mainContent .RuoYi_iframe', topWindow).each(function () {
        if ($(this).data('id') == closeTabId) {
          $(this).remove();
          return false;
        }
      });
    }

    // 当前元素后面没有同辈元素，使当前元素的上一个元素处于活动状态
    if (that.parents('.menuTab').prev('.menuTab').size()) {
      var activeId = that.parents('.menuTab').prev('.menuTab:last').data('id');
      that.parents('.menuTab').prev('.menuTab:last').addClass('active');
      $('.mainContent .RuoYi_iframe', topWindow).each(function () {
        if ($(this).data('id') == activeId) {
          $(this).show().siblings('.RuoYi_iframe').hide();
          return false;
        }
      });
      if ($ && $.common.isNotEmpty(panelUrl)) {
        $('.menuTab[data-id="' + panelUrl + '"]', topWindow).addClass('active').siblings('.menuTab').removeClass('active');
        $('.mainContent .RuoYi_iframe', topWindow).each(function () {
          if ($(this).data('id') == panelUrl) {
            $(this).show().siblings('.RuoYi_iframe').hide();
            return false;
          }
        });
      }
      //  移除当前选项卡
      that.parents('.menuTab').remove();

      // 移除tab对应的内容区
      $('.mainContent .RuoYi_iframe', topWindow).each(function () {
        if ($(this).data('id') == closeTabId) {
          $(this).remove();
          return false;
        }
      });

    }
  }
  // 当前元素不处于活动状态
  else {
    //  移除当前选项卡
    that.parents('.menuTab').remove();

    // 移除相应tab对应的内容区
    $('.mainContent .RuoYi_iframe', topWindow).each(function () {
      if ($(this).data('id') == closeTabId) {
        $(this).remove();
        return false;
      }
    });
  }

  return false;
}


/** 关闭用户编辑弹窗选项卡 */
var closeUserEdit = function (dataId) {
  var topWindow = $(window.parent.document);
  if ($.common.isNotEmpty(dataId)) {
    window.parent.$.modal.closeLoading();
    // 根据dataId关闭指定选项卡
    $('.menuTab[data-id="' + dataId + '"]', topWindow).remove();
    // 移除相应tab对应的内容区
    $('.mainContent .RuoYi_iframe[data-id="' + dataId + '"]', topWindow).remove();
    return;
  }
  var panelUrl = window.frameElement.getAttribute('data-panel');
  $('.page-tabs-content .active i').click();
  if ($.common.isNotEmpty(panelUrl)) {
    $('.menuTab[data-id="' + panelUrl + '"]', topWindow).addClass('active').siblings('.menuTab').removeClass('active');
    $('.mainContent .RuoYi_iframe', topWindow).each(function () {
      if ($(this).data('id') == panelUrl) {
        $(this).show().siblings('.RuoYi_iframe').hide();
        return false;
      }
    });
  }
}

/** 关闭消息创建/编辑弹窗选项卡 */
var closeMessageEdit = function (dataId) {
  var topWindow = $(window.parent.document);
  if ($.common.isNotEmpty(dataId)) {
    window.parent.$.modal.closeLoading();
    // 根据dataId关闭指定选项卡
    $('.menuTab[data-id="' + dataId + '"]', topWindow).remove();
    // 移除相应tab对应的内容区
    $('.mainContent .RuoYi_iframe[data-id="' + dataId + '"]', topWindow).remove();

    //与创建人的相比，就是这里增加了去除tab页签的方法
    $('.menuTabs .page-tabs-content', topWindow).children('a.active.menuTab').remove()
    return;
  }
  var panelUrl = window.frameElement.getAttribute('data-panel');
  $('.page-tabs-content .active i').click();
  if ($.common.isNotEmpty(panelUrl)) {
    //dengshan --begin 先关闭弹窗
    //与创建人的相比，就是这里增加了去除tab页签的方法
    $('.menuTabs .page-tabs-content', topWindow).children('a.active.menuTab').remove()
    //再把之前的页面设置为激活
    $('.menuTab[data-id="' + panelUrl + '"]', topWindow).addClass('active').siblings('.menuTab').removeClass('active');
    $('.mainContent .RuoYi_iframe', topWindow).each(function () {
      if ($(this).data('id') == panelUrl) {
        $(this).show().siblings('.RuoYi_iframe').hide();
        return false;
      }
    });
  }
}

/** 创建选项卡 */
function createMenuItem(dataUrl, menuName) {
  var panelUrl = window.frameElement.getAttribute('data-id');
  dataIndex = $.common.random(1, 100),
    flag = true;
  if (dataUrl == undefined || $.trim(dataUrl).length == 0) return false;
  var topWindow = $(window.parent.document);
  // 选项卡菜单已存在
  $('.menuTab', topWindow).each(function () {
    if ($(this).data('id') == dataUrl) {
      if (!$(this).hasClass('active')) {
        $(this).addClass('active').siblings('.menuTab').removeClass('active');
        $('.page-tabs-content').animate({marginLeft: ""}, "fast");
        // 显示tab对应的内容区
        $('.mainContent .RuoYi_iframe', topWindow).each(function () {
          if ($(this).data('id') == dataUrl) {
            $(this).show().siblings('.RuoYi_iframe').hide();
            return false;
          }
        });
      }
      flag = false;
      return false;
    }
  });
  // 选项卡菜单不存在
  if (flag) {
    var str = '<a href="javascript:;" class="active menuTab" data-id="' + dataUrl + '" data-panel="' + panelUrl + '">' + menuName + ' <i class="fa fa-times-circle"></i></a>';
    $('.menuTab', topWindow).removeClass('active');

    // 添加选项卡对应的iframe
    var str1 = '<iframe class="RuoYi_iframe" name="iframe' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" data-panel="' + panelUrl + '" seamless></iframe>';
    $('.mainContent', topWindow).find('iframe.RuoYi_iframe').hide().parents('.mainContent').append(str1);

    window.parent.$.modal.loading("数据加载中，请稍后...");
    $('.mainContent iframe:visible', topWindow).load(function () {
      window.parent.$.modal.closeLoading();
    });

    // 添加选项卡
    $('.menuTabs .page-tabs-content', topWindow).append(str);
  }
  return false;
}

//日志打印封装处理
var log = {
  log: function (msg) {
    console.log(msg);
  },
  info: function (msg) {
    console.info(msg);
  },
  warn: function (msg) {
    console.warn(msg);
  },
  error: function (msg) {
    console.error(msg);
  }
};

//本地缓存处理localStorage
var storage = {
  set: function (key, value) {
    window.localStorage.setItem(key, value);
  },
  get: function (key) {
    return window.localStorage.getItem(key);
  },
  remove: function (key) {
    window.localStorage.removeItem(key);
  },
  clear: function () {
    window.localStorage.clear();
  }
};
//本地缓存处理localStorage
var session = {
  set: function (key, value) {
    window.sessionStorage.setItem(key, value);
  },
  get: function (key) {
    return window.sessionStorage.getItem(key);
  },
  remove: function (key) {
    window.sessionStorage.removeItem(key);
  },
  clear: function () {
    window.sessionStorage.clear();
  }
};

var errorCode = {
  '000': '操作太频繁，请勿重复请求',
  '401': '当前操作没有权限',
  '403': '当前操作没有权限',
  '404': '资源不存在',
  '417': '未绑定登录账号，请使用密码登录后绑定',
  '423': '演示环境不能操作，如需了解联系冷冷',
  '426': '用户名不存在或密码错误',
  '428': '验证码错误,请重新输入',
  '429': '请求过频繁',
  '479': '演示环境，没有权限操作',
  'default': '系统未知错误,请反馈给管理员'
}
jQuery.support.cors = true;
/** 设置全局ajax处理 */
$.ajaxSetup({
  headers: {
    "Authorization": 'Bearer ' + session.get('token'),
    "TENANT-ID": session.get('tenantId') ? session.get('tenantId') : '',
  },
  complete: function (xhr, resStatus) {
    var res = xhr.responseJSON ? xhr.responseJSON : ''
    var status = Number(xhr.status) || 200
    var message = (res && res.msg) || errorCode[status] || errorCode['default']

    if (status === 401) {
      $.modal.alertError(message + '，请重新登录！', function () {
        logOut()
        return false
      })
      return false
    }

    if (status !== 200 ) {
      $.modal.msgError(message);
      $.modal.closeLoading();
      return false
    }

    if (res && res.code && (res.code !== 0 && res.code !== '200')){
      $.modal.msgError(message);
      $.modal.closeLoading();
      return false
    }

    if (resStatus == 'timeout') {
      $.modal.msgError("服务器超时，请稍后再试！");
      $.modal.enable();
      $.modal.closeLoading();
      return false
    }
    if (resStatus == "parsererror" || resStatus == "error") {
      $.modal.msgError("服务器错误，请联系管理员！");
      $.modal.enable();
      $.modal.closeLoading();
      return false
    }
  }
});

/** 渲染模板 **/
function renderTpl(tplId, data, boxId) {
  var tpl = document.getElementById(tplId).innerHTML; //读取模版
  laytpl(tpl).render(data, function (render) {
    document.getElementById(boxId).innerHTML = render;
  });
}

/** 获取路由参数 **/
function getQueryString(name) {
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  var urlArr = window.location.href.split('?')
  if (urlArr.length <= 1){
    return null
  }
  var url = urlArr[1].match(reg);
  if (url != null) {
    return decodeURI(url[2])//decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。
  } else {
    return null
  }
}

/** 把对象中null转为'' **/
function nullChange(data) {
  Object.keys(data).forEach(function (item) {
    if (data[item] == null) {
      data[item] = ''
    }
  })
  return data
}

/** 渲染表单数据 **/
function applyDrawing(id, data) {
  var field = $(id + " [field]");
  field.each(function () {
    var value = data[$(this).attr("field")];
    if (data.hasOwnProperty($(this).attr("field"))) $(this).val(value);
  });
  // if ($(id).find('input[type="radio"]').length) {
  //   var obj = $(id).find('input[type="radio"]')
  //   for(var i=0; i<obj.length;i++){
  //     // if(obj[i].value == data.type){
  //     //   obj[i].checked = true;
  //     //   break;
  //     // }
  //     // obj[i].checked = false;
  //   }
  //   // $(id).find('input[type="radio"]').filter("input[value='" + data.type + "']").attr("checked", true);
  // }
}

//退出登录
function logOut() {
  $.ajax({
    type: "delete",
    url: api + "/auth/token/logout",
    success: function (res) {
      session.clear()
      window.location.href = '/'
    }
  });
}

//渲染模板后需要重新初始化的代码
function tplInit() {
  // select2复选框事件绑定
  if ($.fn.select2 !== undefined) {
    $.fn.select2.defaults.set("theme", "bootstrap");
    $("select.form-control:not(.noselect2)").each(function () {
      $(this).select2().on("change", function () {
        $(this).valid();
      })
    })
  }

  // iCheck单选框及复选框事件绑定
  if ($.fn.iCheck !== undefined) {
    $(".check-box:not(.noicheck),.radio-box:not(.noicheck)").each(function () {
      $(this).iCheck({
        checkboxClass: 'icheckbox-blue',
        radioClass: 'iradio-blue',
      })
    })
  }

  //ie8、ie9不兼容placeholder处理
  placeholderRender()
}

function toolBarPermission() {
  renderTpl('toolbarTpl', permissions, 'toolbar')
}

//获取数据字典
function dictByType(type) {
  var result = []
  $.ajax({
    url: api + '/admin/dict/type/' + type,
    method: 'get',
    async: false
  }).done(function (res) {
    result = res.data
  })
  return result
}

function renderDictFilter(obj, type) {
  var dict = dictByType(type)
  dict.forEach(function (item) {
    $(obj).append('<option value="' + item.value + '">' + item.label + '</option>')
  })
}

function renderDictCheck(obj, type, name) {
  var dict = dictByType(type)
  dict.forEach(function (item) {
    $(obj).append('<label class="check-box">' +
      '<input name="' + name + '" type="checkbox" value="' + item.value + '">' + item.label +
      '</label>')
  })
  tplInit()
}


function renderDictRadio(obj, type, name) {
  var dict = dictByType(type)
  dict.forEach(function (item) {
    $(obj).append('<label class="radio-box">' +
      '<input name="' + name + '" type="radio" value="' + item.value + '">' + item.label +
      '</label>')
  })
  tplInit()
}

function headerImg(url, id) {
  var windowUrl = window.URL || window.webkitURL;//处理浏览器兼容性
  var xhr = new XMLHttpRequest();
  xhr.open("GET", url, true);
  xhr.responseType = "blob";
  // xhr.setRequestHeader("Authorization", 'Bearer ' + session.get('token'),);
  var img = document.getElementById(id)
  xhr.onload = function () {
    if (this.status == 200) {
      var blob = this.response;
      img.src = windowUrl.createObjectURL(blob)
      window.setTimeout(function () {
        windowUrl.revokeObjectURL(blob)
      }, 0)
    }
  }
  xhr.send();
}

function headerImgBase64(url, id) {
  $.ajax({
    url: url+'?type=base64',
    type: 'get',
  }).done(function (res) {
    var img = document.getElementById(id)
    img.src = 'data:image/jpg;base64,'+res
  })
}


function disabledAll(id){
  $("#"+id).find("*").each(function() {
    $(this).attr("disabled", "disabled");
  });
}

function enableAll(id){
  $("#"+id).find("*").each(function() {
    $(this).removeAttr("disabled");
  });
}

function hideAll(id){
  $("#"+id).find("*").each(function() {
    $(this).hide();
  });
}

function showAll(id){
  $("#"+id).find("*").each(function() {
    $(this).show();
  });
}

var api = ''
// api = 'http://192.168.1.53:9999'
// api = 'http://192.168.1.184:4000'

//权限
var permissions = JSON.parse(session.get('permissions'))

